package com.itg.vms.service.impl;

import com.itg.vms.dao.UserDao;
import com.itg.vms.dao.impl.UserDaoImpl;
import com.itg.vms.entity.User;
import com.itg.vms.service.UserService;
import com.itg.vms.util.MD5Utils;

import java.util.List;

public class UserServiceImpl implements UserService {

    //创建dao层
    UserDao userDao = new UserDaoImpl();


    /**
     * 用户登录逻辑接口实现
     *
     * @param username 用户名
     * @param password 密码
     * @return
     */
    @Override
    public User login(String username, String password) {
        //将servlet传过来的密码做加密处理sys_user
        password = MD5Utils.md5(password);

        return userDao.selectUserByUsernameAndPassword(username, password);
    }

    /**
     * 添加用户
     *
     * @param user 要添加的用户实体
     * @return
     */
    @Override
    public boolean addUser(User user) {
        return userDao.addUser(user);
    }

    /**
     * 删除用户
     *
     * @param user_id  要删除的用户id
     * @param updateBy 删除的操作者
     * @return
     */
    @Override
    public int deleteUserById(String user_id, String updateBy) {
        return userDao.deleteUserById(user_id, updateBy);
    }

    /**
     * 分页查询所有用户
     *
     * @param currentPage 当前页码
     * @param pageSize    页面显示的数据条数
     * @return 用户列表
     */
    @Override
    public List<User> selectAllUser(Integer currentPage, Integer pageSize) {
        return userDao.selectAllUser(currentPage, pageSize);
    }

    /**
     * 得到user的总记录数
     *
     * @return user表的总记录数
     */
    @Override
    public Long getAllUseSize() {
        return userDao.getAllUserSize();
    }

    /**
     * 修改用户相关信息
     *
     * @param user_name
     * @param nick_name
     * @param user_type
     * @param email
     * @param phonenumber
     * @param gender
     * @param status
     * @param username
     * @return
     */
    @Override
    public boolean UpdateUserById(String user_name, String nick_name, String user_type, String email, String phonenumber, String gender, String status, String username) {
        return userDao.UpdateUserById(user_name, nick_name, user_type, email, phonenumber, gender, status, username);
    }

    /**
     * 登陆者修改自己个人资料
     *
     * @param user
     * @return
     */
    @Override
    public boolean updateAdminAndUserInfo(User user) {
        return userDao.updateAdminAndUserInfo(user);
    }

    /**
     * 修改密码业务逻辑
     *
     * @param new_password
     * @param username
     * @return
     */
    @Override
    public boolean updatePassword(String new_password, String username) {
        //将servlet传过来的密码做加密处理sys_user
        new_password = MD5Utils.md5(new_password);
        return userDao.updatePassword(new_password, username);
    }

    /**
     * 注册新用户
     *
     * @param user 用户实体
     * @return 是否注册成功
     */
    @Override
    public Integer registerUser(User user) {

        //查询当前用户名是否存在
        User user1 = userDao.selectUserByUsername(user.getUserName());
        if(user1==null){
            //md5加密密码
            String password = MD5Utils.md5(user.getPassword());
            user.setPassword(password);
            int i = userDao.registerUser(user) ? 1 : -1;
            return i;
        }else{
            return 0;
        }
    }

    /**
     * 获取编辑框中的数据
     *
     * @param user_id
     * @return
     */
    @Override
    public User GeteditUserById(String user_id) {
        return userDao.GeteditUserById(user_id);
    }

    /**
     * 更新用户状态
     *
     * @param userId 要更新的用户id
     * @param status 要更新的状态
     * @return 影响的行数
     */
    @Override
    public int updateUserStatus(String userId, String status) {
        return userDao.updateUserStatus(userId, status);
    }

    /**
     * 根据用户名查询用户
     *
     * @param user_id
     * @param user_name
     * @param nick_name
     * @param phonenumber
     * @return
     */
    @Override
    public List<User> selectUserByName(String user_id, String user_name, String nick_name, String phonenumber) {
        return userDao.selectUserByName(user_id, user_name, nick_name, phonenumber);
    }


}
